package com.gatico;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

public class ProxyEncoder extends MessageToByteEncoder<ProxyProtocol> {
    @Override
    protected void encode(ChannelHandlerContext ctx, ProxyProtocol protocol, ByteBuf byteBuf) {
        byteBuf.writeBytes(protocol.GTC);
        byteBuf.writeInt(protocol.v);
        byteBuf.writeByte(protocol.type);
        if (protocol.type != ProxyProtocol.TYPE.HEART.value()) {
            if (protocol.type == ProxyProtocol.TYPE.HTTP.value() || protocol.type == ProxyProtocol.TYPE.TCP.value()) {
                byteBuf.writeInt(protocol.ip);
                byteBuf.writeInt(protocol.port);
            }
            byteBuf.writeInt(protocol.length);
            byteBuf.writeBytes(protocol.data);
        }
    }

}
